// pages/index/index.js
const auth = require('../../utils/auth');
const util = require('../../utils/util');
const app = getApp();

Page({
  data: {
    isLoggedIn: false,
    userInfo: null,
    isLoading: false,
    modules: [
      { type: 'audio', name: '音频识别', icon: 'audio' },
      { type: 'video', name: '视频处理', icon: 'video' },
      { type: 'text', name: '文本转换', icon: 'text' }
    ]
  },

  /**
   * 页面加载时触发
   */
  onLoad(options) {
    console.log('首页加载，参数:', options);
    this.initializePage();
  },

  /**
   * 页面显示时触发
   */
  onShow() {
    // 每次页面显示时检查登录状态
    this.checkLoginStatus();
  },

  /**
   * 初始化页面
   */
  initializePage() {
    try {
      this.checkLoginStatus();
      console.log('首页初始化完成');
    } catch (error) {
      console.error('首页初始化失败:', error);
      this.showError('页面初始化失败');
    }
  },

  /**
   * 检查登录状态
   */
  checkLoginStatus() {
    try {
      const isLoggedIn = auth.checkLoginStatus();
      const userInfo = auth.getUserInfo();
      
      // 更新全局状态
      app.updateGlobalData({
        isLoggedIn,
        userInfo
      });
      
      // 更新页面数据
      this.setData({
        isLoggedIn,
        userInfo
      });
      
      const statusText = isLoggedIn ? '已登录' : '未登录';
      console.log(`首页 - 登录状态: ${statusText}`, userInfo);
    } catch (error) {
      console.error('检查登录状态失败:', error);
    }
  },

  /**
   * 导航到功能模块
   * @param {Object} e - 事件对象
   */
  navigateToModule(e) {
    const { type } = e.currentTarget.dataset;
    
    if (!type) {
      this.showError('无效的功能类型');
      return;
    }
    
    // 检查是否已登录
    if (!this.data.isLoggedIn) {
      this.showLoginConfirm();
      return;
    }
    
    // 已登录，允许跳转
    this.goToProcessPage(type);
  },

  /**
   * 显示登录确认对话框
   */
  showLoginConfirm() {
    wx.showModal({
      title: '提示',
      content: '需要登录才能使用此功能，是否前往登录？',
      confirmText: '立即登录',
      cancelText: '取消',
      success: (res) => {
        if (res.confirm) {
          this.handleLogin();
        }
      }
    });
  },

  /**
   * 处理登录
   */
  async handleLogin() {
    if (this.data.isLoading) {
      return;
    }
    
    this.setData({ isLoading: true });
    
    try {
      // 显示加载提示
      wx.showLoading({
        title: '登录中...',
        mask: true
      });
      
      const result = await app.doLogin('wechat');
      
      // 更新页面数据
      this.checkLoginStatus();
      
      // 显示成功提示
      this.showSuccess('登录成功');
      
      console.log('登录成功:', result);
    } catch (error) {
      console.error('登录失败:', error);
      this.showError('登录失败，请重试');
    } finally {
      wx.hideLoading();
      this.setData({ isLoading: false });
    }
  },

  /**
   * 跳转到处理页面
   * @param {string} type - 功能类型
   */
  goToProcessPage(type) {
    wx.navigateTo({
      url: `/pages/process/process?type=${type}`,
      fail: (error) => {
        console.error('页面跳转失败:', error);
        this.showError('页面跳转失败');
      }
    });
  },

  /**
   * 跳转到登录页面
   */
  goToLogin() {
    wx.navigateTo({
      url: '/pages/login/login',
      fail: (error) => {
        console.error('跳转登录页失败:', error);
        this.showError('跳转失败');
      }
    });
  },

  /**
   * 显示成功提示
   * @param {string} message - 提示消息
   */
  showSuccess(message) {
    wx.showToast({
      title: message,
      icon: 'success',
      duration: 2000
    });
  },

  /**
   * 处理客服会话
   * @param {Object} e - 事件对象
   */
  handleContact(e) {
    console.log('客服会话事件:', e);
    
    // 检查是否进入了客服会话
    if (e.detail.errMsg === 'contact:ok') {
      console.log('成功进入客服会话');
    } else if (e.detail.errMsg === 'contact:fail') {
      console.log('进入客服会话失败');
      this.showCustomerServiceDialog();
    }
  },

  /**
   * 显示客服对话框（降级方案）
   */
  showCustomerServiceDialog() {
    wx.showModal({
      title: '联系客服',
      content: '如需帮助，请添加微信客服：\n\n微信号：speech-helper\n或者扫描二维码联系我们\n\n工作时间：9:00-18:00',
      confirmText: '复制微信号',
      cancelText: '取消',
      success: (res) => {
        if (res.confirm) {
          // 复制微信号到剪贴板
          wx.setClipboardData({
            data: 'speech-helper',
            success: () => {
              wx.showToast({
                title: '微信号已复制',
                icon: 'success'
              });
            }
          });
        }
      }
    });
  },

  /**
   * 下拉刷新
   */
  onPullDownRefresh() {
    this.checkLoginStatus();
    wx.stopPullDownRefresh();
  }
});